package com.yehui.algorithm.sword;

/**
 * 把只包含因子2、3和5的数称作丑数（Ugly Number）。例如6、8都是丑数，但14不是，因为它包含因子7。
 * 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
 * Created by XuChunH on 2016/9/18.
 */
public class GetUglyNumber {
    public int solution(int index){
        if(index < 7){
            return index;
        }
        int[] array = new int[index];
        array[0] = 1;
        int m2 = 0;
        int m3 = 0;
        int m5 = 0;
        for (int i = 1; i < index; i++) {
            array[i] = Math.min(array[m2] * 2, Math.min(array[m3] * 3, array[m5] * 5));
            if(array[i] == array[m2] * 2){
                m2++;
            }
            if(array[i] == array[m3] * 3){
                m3++;
            }
            if(array[i] == array[m5] * 5){
                m5++;
            }
        }
        return array[index - 1];
    }

}
